package cn.tedu.carehome.foundation.mapper;

import cn.tedu.carehome.foundation.pojo.vo.OlderListItemVO;
import cn.tedu.carehome.foundation.pojo.entity.Older;
import cn.tedu.carehome.foundation.pojo.vo.OlderStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理老人健康信息的Mapper接口
 *
 * @author 程辉
 */
@Repository
public interface OlderMapper {
    /**
     *  插入老人健康数据
     * @param older 老人数据
     * @return  受影响的行数
     */
    int insert(Older older);

    /**
     *  批量插入老人健康数据
     * @param olderList 若干老人数据的List集合
     * @return受影响的行数
     */
    int insertBatch(List<Older> olderList);

    /**
     * 根据id删除老人健康数据
     * @param id 老人的id
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据若干id批量删除老人健康数据
     * @param ids 若干老人id
     * @return  受影响的行数
     */
    int deleteBatchByIds(Long[] ids);

    /**
     * 修改老人健康数据
     * @param older 封装了被修改的id和新数据的对象
     * @return 受影响的行数
     */
    int update(Older older);

    /**
     * 统计老人健康数据的数量
     * @return 老人的数量
     */
    int count();

    /**
     * 统计匹配查询内容的老人健康数量
     * @param content 查询的内容
     * @return 匹配的老人数量
     */
    int countByContent(String content);

    /**
     * 根据老人名称统计相册的数量
     * @param name  老人名称
     * @return 老人的数量
     */
    int countByName(String name);

    /**
     * 根据名称和“非此id”统计数量
     * @param name 老人的名称
     * @param id 老人的id
     * @return 匹配的数量
     */
    int countByNameAndNotId(@Param("name") String name, @Param("id") Long id);


    /**
     * 根据老人id查询老人健详情
     * @param id 老人的id
     * @return 匹配的老人详情，如果没有匹配的数据，则返回null
     */
    OlderStandardVO getStandardById(Long id);

    /**
     * 查询老人列表
     * @return 老人列表
     */
    List<OlderListItemVO> list();


    /**
     * 分页查询老人列表
     * @param page 页数
     * @param size 总数
     * @param content 输入的需要查询的内容
     * @return 分页查到的老人健康信息列表数据
     */
    List<OlderListItemVO> listLimit(int page, int size, String content);
}
